/**
 * 生产计划模块API接口 V2
 * 支持模板化创建、任务化管理、进度跟踪等新功能
 */

import { http } from '@/common/service/service.js'

// 生产计划相关接口
const productionPlan = {
  // 获取生产计划列表
  getList(params = {}) {
    return http.get('/mes/plan/list', params)
  },

  // 获取生产计划详情
  getDetail(id) {
    return http.get(`/mes/plan/queryById`, { id })
  },

  // 创建生产计划
  create(data) {
    return http.post('/mes/plan/add', data)
  },

  // 更新生产计划
  update(data) {
    return http.put('/mes/plan/edit', data)
  },

  // 删除生产计划
  delete(id) {
    return http.delete(`/mes/plan/delete?id=${id}`)
  },

  // 批量删除生产计划
  deleteBatch(ids) {
    return http.delete(`/mes/plan/deleteBatch?ids=${ids}`)
  },

  // 启动生产计划
  start(id) {
    return http.post(`/mes/plan/start/${id}`)
  },

  // 暂停生产计划
  pause(id) {
    return http.post(`/mes/plan/pause/${id}`)
  },

  // 完成生产计划
  complete(id) {
    return http.post(`/mes/plan/complete/${id}`)
  },

  // 获取计划进度统计
  getProgress(id) {
    return http.get(`/mes/plan/progress/${id}`)
  },

  // 获取计划任务列表
  getTasks(planId, params = {}) {
    return http.get(`/mes/plan/tasks/${planId}`, params)
  }
}

// 生产模板相关接口
const productionTemplate = {
  // 获取生产模板列表
  getList(params = {}) {
    return http.get('/mes/productiontemplate/list', params)
  },

  // 获取生产模板详情
  getDetail(id) {
    return http.get(`/mes/productiontemplate/queryById`, { id })
  },

  // 创建生产模板
  create(data) {
    return http.post('/mes/productiontemplate/add', data)
  },

  // 更新生产模板
  update(data) {
    return http.put('/mes/productiontemplate/edit', data)
  },

  // 删除生产模板
  delete(id) {
    return http.delete(`/mes/productiontemplate/delete?id=${id}`)
  },

  // 从模板创建生产计划
  createPlanFromTemplate(templateId, data) {
    return http.post(`/mes/productiontemplate/createPlan/${templateId}`, data)
  },

  // 获取默认模板
  getDefault() {
    return http.get('/mes/productiontemplate/default')
  }
}

// 生产任务相关接口 - 对应 MesProductionPlanTaskController
const productionTask = {
  // 获取生产任务列表
  getList(params = {}) {
    return http.get('/mes/task/list', params)
  },

  // 获取生产任务详情
  getDetail(id) {
    return http.get(`/mes/task/detail/${id}`)
  },

  // 获取员工可领取的任务
  getAvailableTasks(params = {}) {
    return http.get('/mes/task/available', { params })
  },

  // 获取员工的任务列表（我的任务）
  getMyTasks(params = {}) {
    return http.get('/mes/task/my-tasks', { params })
  },

  // 获取员工历史任务
  getHistoryTasks(params = {}) {
    return http.get('/mes/task/history', { params })
  },

  // 获取员工任务统计
  getEmployeeStatistics(employeeId) {
    return http.get(`/mes/task/statistics/${employeeId}`)
  },

  // 根据计划ID获取任务列表
  getTasksByPlan(planId) {
    return http.get(`/mes/task/by-plan/${planId}`)
  },

  // 获取分组任务数据
  getGroupedTasks(params = {}) {
    return http.get('/mes/task/grouped', params)
  },

  // 领取任务
  claimTask(data) {
    return http.post('/mes/task/claim', data)
  },

  // 开始任务
  startTask(data) {
    return http.post('/mes/task/start', null, data)
  },

  // 暂停任务
  pauseTask(data) {
    return http.post('/mes/task/pause', null, data)
  },

  // 恢复任务
  resumeTask(data) {
    return http.post('/mes/task/resume', null, data)
  },

  // 完成任务
  completeTask(data) {
    return http.post('/mes/task/complete', data)
  },

  // 更新任务进度
  updateProgress(data) {
    return http.post('/mes/task/update-progress', data)
  }
}

// 工种管理相关接口
const workType = {
  // 获取工种列表
  getList(params = {}) {
    return http.get('/mes/worktype/list', params)
  },

  // 获取工种详情
  getDetail(id) {
    return http.get(`/mes/worktype/queryById`, { id })
  },

  // 获取工种下的员工列表
  getEmployees(workTypeId) {
    return http.get(`/mes/worktype/employees/${workTypeId}`)
  },

  // 为工种添加员工
  addEmployees(data) {
    return http.post('/mes/worktype/add-employees', data)
  }
}

export { productionPlan, productionTemplate, productionTask, workType }
